home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 November / PCWNOV07.iso / Software / Freeware / NSIS 2.29 / nsis-2.29-setup.exe / Examples / FileFunc.nsi < prev    next >
Encoding:
Text File  |  2006-02-10  |  19.4 KB  |  752 lines

  1. ;_____________________________________________________________________________
  2. ;
  3. ;                          File Functions
  4. ;_____________________________________________________________________________
  5. ;
  6. ; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
  7.  
  8. Name "File Functions"
  9. OutFile "FileFunc.exe"
  10. Caption "$(^Name)"
  11. XPStyle on
  12.  
  13. !include "WinMessages.nsh"
  14. !include "FileFunc.nsh"
  15.  
  16. !insertmacro Locate
  17. !insertmacro GetSize
  18. !insertmacro DriveSpace
  19. !insertmacro GetDrives
  20. !insertmacro GetTime
  21. !insertmacro GetFileAttributes
  22. !insertmacro GetFileVersion
  23. !insertmacro GetExeName
  24. !insertmacro GetExePath
  25. !insertmacro GetParameters
  26. !insertmacro GetOptions
  27. !insertmacro GetRoot
  28. !insertmacro GetParent
  29. !insertmacro GetFileName
  30. !insertmacro GetBaseName
  31. !insertmacro GetFileExt
  32. !insertmacro BannerTrimPath
  33. !insertmacro DirState
  34. !insertmacro RefreshShellIcons
  35.  
  36. Var INI
  37. Var HWND
  38. Var STATE
  39. Var FUNCTION
  40. Var LOCATE1
  41. Var LOCATE2
  42. Var GETSIZE1
  43. Var GETSIZE2
  44. Var GETSIZE3
  45. Var GETSIZE4
  46. Var GETSIZE5
  47. Var GETSIZE6
  48. Var DRIVESPACE1
  49. Var DRIVESPACE2
  50. Var GETDRIVES1
  51. Var GETTIME1
  52. Var GETTIME2
  53. Var GETFILEATTRIBUTES1
  54. Var GETFILEATTRIBUTES2
  55. Var GETFILEVERSION1
  56. Var GETOPTIONS1
  57. Var GETOPTIONS2
  58. Var GETROOT1
  59. Var GETPARENT1
  60. Var GETFILENAME1
  61. Var GETBASENAME1
  62. Var GETFILEEXT1
  63. Var BANNERTRIMPATH1
  64. Var BANNERTRIMPATH2
  65. Var DIRSTATE1
  66.  
  67. Page Custom ShowCustom LeaveCustom
  68.  
  69. Function ShowCustom
  70.     InstallOptions::initDialog /NOUNLOAD "$INI"
  71.     Pop $hwnd
  72.     GetDlgItem $1 $HWND 1201
  73.     ShowWindow $1 0
  74.     GetDlgItem $1 $HWND 1202
  75.     ShowWindow $1 0
  76.     GetDlgItem $1 $HWND 1206
  77.     EnableWindow $1 0
  78.     SendMessage $1 ${WM_ENABLE} 1 0
  79.     StrCpy $LOCATE1 $DOCUMENTS
  80.     StrCpy $LOCATE2 '/L=FD /M=*.* /S=0B /G=1 /B=0'
  81.     StrCpy $GETSIZE1 '$WINDIR'
  82.     StrCpy $GETSIZE2 '/M=Explorer.exe /S=0K /G=0'
  83.     StrCpy $GETSIZE3 '$PROGRAMFILES\Common Files'
  84.     StrCpy $GETSIZE4 '/S=0M'
  85.     StrCpy $GETSIZE5 '$WINDIR'
  86.     StrCpy $GETSIZE6 '/G=0'
  87.     StrCpy $DRIVESPACE1 'C:\'
  88.     StrCpy $DRIVESPACE2 '/D=F /S=M'
  89.     StrCpy $GETDRIVES1 'FDD+CDROM'
  90.     StrCpy $GETTIME1 '$WINDIR\Explorer.exe'
  91.     StrCpy $GETTIME2 'C'
  92.     StrCpy $GETFILEATTRIBUTES1 'C:\IO.SYS'
  93.     StrCpy $GETFILEATTRIBUTES2 'ALL'
  94.     StrCpy $GETFILEVERSION1 '$WINDIR\Explorer.exe'
  95.     StrCpy $GETOPTIONS1 '/SILENT=yes /INSTDIR="$PROGRAMFILES\Common Files"'
  96.     StrCpy $GETOPTIONS2 '/INSTDIR='
  97.     StrCpy $GETROOT1 'C:\path\file.dll'
  98.     StrCpy $GETPARENT1 'C:\path\file.dll'
  99.     StrCpy $GETFILENAME1 'C:\path\file.dll'
  100.     StrCpy $GETBASENAME1 'C:\path\file.dll'
  101.     StrCpy $GETFILEEXT1 'C:\path\file.dll'
  102.     StrCpy $BANNERTRIMPATH1 'C:\Server\Documents\Terminal\license.htm'
  103.     StrCpy $BANNERTRIMPATH2 '34A'
  104.     StrCpy $DIRSTATE1 '$TEMP'
  105.  
  106.     GetDlgItem $1 $HWND 1203
  107.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE1"
  108.     GetDlgItem $1 $HWND 1205
  109.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE2"
  110.     InstallOptions::show
  111.     Pop $0
  112. FunctionEnd
  113.  
  114. Function LeaveCustom
  115.     ReadINIStr $STATE $INI "Field 1" "State"
  116.     ReadINIStr $R1 $INI "Field 2" "State"
  117.     ReadINIStr $R2 $INI "Field 3" "State"
  118.     ReadINIStr $R3 $INI "Field 4" "State"
  119.     ReadINIStr $R4 $INI "Field 5" "State"
  120.     ReadINIStr $0 $INI "Settings" "State"
  121.     StrCmp $0 6 view
  122.     StrCmp $0 0 Enter
  123.     goto main
  124.  
  125.     view:
  126.     StrCpy $0 '$$'
  127.     StrCpy $1 'n'
  128.     StrCpy $2 'r'
  129.     StrCmp $R4 "LocateCallback" 0 +3
  130.     StrCpy $R0 `Function LocateCallback$\r$\n    MessageBox MB_OKCANCEL '$0$$R9    "path\name"=[$$R9]$0\$1$0$$R8    "path"          =[$$R8]$0\$1$0$$R7    "name"        =[$$R7]$0\$1$0$$R6    "size"           =[$$R6]' IDOK +2$\r$\n    StrCpy $$R0 StopLocate$\r$\n$\r$\n    Push $$R0$\r$\nFunctionEnd`
  131.     goto send
  132.     StrCmp $R4 "GetDrivesCallback" 0 error
  133.     StrCpy $R0 `Function GetDrivesCallback$\r$\n    MessageBox MB_OKCANCEL '$0$$9    "drive letter"=[$$9]$0\$1$0$$8    "drive type" =[$$8]' IDOK +2$\r$\n    StrCpy $$R0 StopGetDrives$\r$\n    StrCpy $$R5 '$$R5$$9  [$$8 Drive]$$\$2$$\$1'$\r$\n$\r$\n    Push $$R0$\r$\nFunctionEnd`
  134.     goto send
  135.  
  136.     main:
  137.     StrCmp $FUNCTION '' DefaultSend
  138.     StrCmp $FUNCTION Locate 0 +4
  139.     StrCpy $LOCATE1 $R2
  140.     StrCpy $LOCATE2 $R3
  141.     goto DefaultSend
  142.     StrCmp $FUNCTION GetSize1 0 +4
  143.     StrCpy $GETSIZE1 $R2
  144.     StrCpy $GETSIZE2 $R3
  145.     goto DefaultSend
  146.     StrCmp $FUNCTION GetSize2 0 +4
  147.     StrCpy $GETSIZE3 $R2
  148.     StrCpy $GETSIZE4 $R3
  149.     goto DefaultSend
  150.     StrCmp $FUNCTION GetSize3 0 +4
  151.     StrCpy $GETSIZE5 $R2
  152.     StrCpy $GETSIZE6 $R3
  153.     goto DefaultSend
  154.     StrCmp $FUNCTION DriveSpace 0 +4
  155.     StrCpy $DRIVESPACE1 $R1
  156.     StrCpy $DRIVESPACE2 $R3
  157.     goto DefaultSend
  158.     StrCmp $FUNCTION GetDrives 0 +3
  159.     StrCpy $GETDRIVES1 $R1
  160.     goto DefaultSend
  161.     StrCmp $FUNCTION GetTime 0 +4
  162.     StrCpy $GETTIME1 $R1
  163.     StrCpy $GETTIME2 $R3
  164.     goto DefaultSend
  165.     StrCmp $FUNCTION GetFileAttributes 0 +4
  166.     StrCpy $GETFILEATTRIBUTES1 $R1
  167.     StrCpy $GETFILEATTRIBUTES2 $R3
  168.     goto DefaultSend
  169.     StrCmp $FUNCTION GetFileVersion 0 +3
  170.     StrCpy $GETFILEVERSION1 $R1
  171.     goto DefaultSend
  172.     StrCmp $FUNCTION GetOptions 0 +4
  173.     StrCpy $GETOPTIONS1 $R1
  174.     StrCpy $GETOPTIONS2 $R3
  175.     goto DefaultSend
  176.     StrCmp $FUNCTION GetRoot 0 +3
  177.     StrCpy $GETROOT1 $R1
  178.     goto DefaultSend
  179.     StrCmp $FUNCTION GetParent 0 +3
  180.     StrCpy $GETPARENT1 $R1
  181.     goto DefaultSend
  182.     StrCmp $FUNCTION GetFileName 0 +3
  183.     StrCpy $GETFILENAME1 $R1
  184.     goto DefaultSend
  185.     StrCmp $FUNCTION GetBaseName 0 +3
  186.     StrCpy $GETBASENAME1 $R1
  187.     goto DefaultSend
  188.     StrCmp $FUNCTION GetFileExt 0 +3
  189.     StrCpy $GETFILEEXT1 $R1
  190.     goto DefaultSend
  191.     StrCmp $FUNCTION BannerTrimPath 0 +4
  192.     StrCpy $BANNERTRIMPATH1 $R1
  193.     StrCpy $BANNERTRIMPATH2 $R3
  194.     goto DefaultSend
  195.     StrCmp $FUNCTION DirState 0 +2
  196.     StrCpy $DIRSTATE1 $R2
  197.  
  198.     DefaultSend:
  199.     GetDlgItem $1 $HWND 1201
  200.     EnableWindow $1 1
  201.     ShowWindow $1 0
  202.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  203.     GetDlgItem $1 $HWND 1202
  204.     EnableWindow $1 1
  205.     ShowWindow $1 0
  206.     GetDlgItem $1 $HWND 1203
  207.     EnableWindow $1 1
  208.     ShowWindow $1 0
  209.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  210.     GetDlgItem $1 $HWND 1204
  211.     EnableWindow $1 1
  212.     ShowWindow $1 0
  213.     GetDlgItem $1 $HWND 1205
  214.     EnableWindow $1 1
  215.     GetDlgItem $1 $HWND 1206
  216.     ShowWindow $1 0
  217.     EnableWindow $1 0
  218.     GetDlgItem $1 $HWND 1207
  219.     ShowWindow $1 0
  220.     GetDlgItem $1 $HWND 1208
  221.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  222.     GetDlgItem $1 $HWND 1209
  223.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  224.     GetDlgItem $1 $HWND 1210
  225.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  226.     GetDlgItem $1 $HWND 1211
  227.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  228.  
  229.     ReadINIStr $0 $INI "Field 1" "State"
  230.     StrCmp $0 "  1. Locate" 0 GetSize1Send
  231.     StrCpy $FUNCTION Locate
  232.     GetDlgItem $1 $HWND 1203
  233.     ShowWindow $1 1
  234.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE1"
  235.     GetDlgItem $1 $HWND 1204
  236.     ShowWindow $1 1
  237.     GetDlgItem $1 $HWND 1205
  238.     ShowWindow $1 1
  239.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE2"
  240.     GetDlgItem $1 $HWND 1206
  241.     ShowWindow $1 1
  242.     SendMessage $1 ${WM_SETTEXT} 1 "STR:LocateCallback"
  243.     GetDlgItem $1 $HWND 1207
  244.     ShowWindow $1 1
  245.     GetDlgItem $1 $HWND 1209
  246.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Path"
  247.     GetDlgItem $1 $HWND 1210
  248.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  249.     GetDlgItem $1 $HWND 1211
  250.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Function"
  251.     abort
  252.  
  253.     GetSize1Send:
  254.     StrCmp $0 "  2. GetSize                 (file)" 0 GetSize2Send
  255.     StrCpy $FUNCTION 'GetSize1'
  256.     GetDlgItem $1 $HWND 1203
  257.     ShowWindow $1 1
  258.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE1"
  259.     GetDlgItem $1 $HWND 1204
  260.     ShowWindow $1 1
  261.     GetDlgItem $1 $HWND 1205
  262.     ShowWindow $1 1
  263.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE2"
  264.     GetDlgItem $1 $HWND 1209
  265.     SendMessage $1 ${WM_SETTEXT} 1 "STR:File"
  266.     GetDlgItem $1 $HWND 1210
  267.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  268.     Abort
  269.  
  270.     GetSize2Send:
  271.     StrCmp $0 "                                   (directory)" 0 GetSize3Send
  272.     StrCpy $FUNCTION 'GetSize2'
  273.     GetDlgItem $1 $HWND 1203
  274.     ShowWindow $1 1
  275.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE3"
  276.     GetDlgItem $1 $HWND 1204
  277.     ShowWindow $1 1
  278.     GetDlgItem $1 $HWND 1205
  279.     ShowWindow $1 1
  280.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE4"
  281.     GetDlgItem $1 $HWND 1209
  282.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Directory"
  283.     GetDlgItem $1 $HWND 1210
  284.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  285.     Abort
  286.  
  287.     GetSize3Send:
  288.     StrCmp $0 "                                   (no size, no subdir)" 0 DriveSpaceSend
  289.     StrCpy $FUNCTION 'GetSize3'
  290.     GetDlgItem $1 $HWND 1203
  291.     ShowWindow $1 1
  292.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE5"
  293.     GetDlgItem $1 $HWND 1204
  294.     ShowWindow $1 1
  295.     GetDlgItem $1 $HWND 1205
  296.     ShowWindow $1 1
  297.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE6"
  298.     GetDlgItem $1 $HWND 1209
  299.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Directory"
  300.     GetDlgItem $1 $HWND 1210
  301.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  302.     Abort
  303.  
  304.     DriveSpaceSend:
  305.     StrCmp $0 "  3. DriveSpace" 0 GetDrivesSend
  306.     StrCpy $FUNCTION DriveSpace
  307.     GetDlgItem $1 $HWND 1201
  308.     ShowWindow $1 1
  309.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$DRIVESPACE1"
  310.     GetDlgItem $1 $HWND 1202
  311.     ShowWindow $1 1
  312.     EnableWindow $1 0
  313.     GetDlgItem $1 $HWND 1205
  314.     ShowWindow $1 1
  315.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$DRIVESPACE2"
  316.     GetDlgItem $1 $HWND 1206
  317.     ShowWindow $1 0
  318.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  319.     GetDlgItem $1 $HWND 1207
  320.     ShowWindow $1 0
  321.     GetDlgItem $1 $HWND 1209
  322.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Drive"
  323.     GetDlgItem $1 $HWND 1210
  324.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  325.     abort
  326.  
  327.     GetDrivesSend:
  328.     StrCmp $0 "  4. GetDrives             (by type)" 0 GetDrives2Send
  329.     StrCpy $FUNCTION GetDrives
  330.     GetDlgItem $1 $HWND 1201
  331.     ShowWindow $1 1
  332.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETDRIVES1"
  333.     GetDlgItem $1 $HWND 1202
  334.     ShowWindow $1 1
  335.     EnableWindow $1 0
  336.     GetDlgItem $1 $HWND 1205
  337.     ShowWindow $1 0
  338.     GetDlgItem $1 $HWND 1206
  339.     ShowWindow $1 1
  340.     SendMessage $1 ${WM_SETTEXT} 1 "STR:GetDrivesCallback"
  341.     GetDlgItem $1 $HWND 1207
  342.     ShowWindow $1 1
  343.     GetDlgItem $1 $HWND 1209
  344.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  345.     GetDlgItem $1 $HWND 1211
  346.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Function"
  347.     abort
  348.  
  349.     GetDrives2Send:
  350.     StrCmp $0 "                                   (all by letter)" 0 GetTime1Send
  351.     StrCpy $FUNCTION ''
  352.     GetDlgItem $1 $HWND 1201
  353.     ShowWindow $1 1
  354.     EnableWindow $1 0
  355.     SendMessage $1 ${WM_ENABLE} 1 0
  356.     SendMessage $1 ${WM_SETTEXT} 1 "STR:ALL"
  357.     GetDlgItem $1 $HWND 1202
  358.     ShowWindow $1 1
  359.     EnableWindow $1 0
  360.     GetDlgItem $1 $HWND 1205
  361.     ShowWindow $1 0
  362.     GetDlgItem $1 $HWND 1206
  363.     ShowWindow $1 1
  364.     SendMessage $1 ${WM_SETTEXT} 1 "STR:GetDrivesCallback"
  365.     GetDlgItem $1 $HWND 1207
  366.     ShowWindow $1 1
  367.     GetDlgItem $1 $HWND 1209
  368.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  369.     GetDlgItem $1 $HWND 1211
  370.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Function"
  371.     abort
  372.  
  373.     GetTime1Send:
  374.     StrCmp $0 "  5. GetTime                (local time)" 0 GetTime2Send
  375.     StrCpy $FUNCTION ''
  376.     GetDlgItem $1 $HWND 1201
  377.     ShowWindow $1 1
  378.     EnableWindow $1 0
  379.     SendMessage $1 ${WM_ENABLE} 1 0
  380.     GetDlgItem $1 $HWND 1202
  381.     ShowWindow $1 1
  382.     EnableWindow $1 0
  383.     GetDlgItem $1 $HWND 1205
  384.     ShowWindow $1 1
  385.     EnableWindow $1 1
  386.     SendMessage $1 ${WM_SETTEXT} 1 "STR:L"
  387.     GetDlgItem $1 $HWND 1210
  388.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  389.     Abort
  390.  
  391.     GetTime2Send:
  392.     StrCmp $0 "                                   (file time)" 0 GetFileAttributesSend
  393.     StrCpy $FUNCTION GetTime
  394.     GetDlgItem $1 $HWND 1201
  395.     ShowWindow $1 1
  396.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETTIME1"
  397.     GetDlgItem $1 $HWND 1202
  398.     ShowWindow $1 1
  399.     GetDlgItem $1 $HWND 1205
  400.     ShowWindow $1 1
  401.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETTIME2"
  402.     GetDlgItem $1 $HWND 1209
  403.     SendMessage $1 ${WM_SETTEXT} 1 "STR:File"
  404.     GetDlgItem $1 $HWND 1210
  405.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  406.     Abort
  407.  
  408.     GetFileAttributesSend:
  409.     StrCmp $0 "  6. GetFileAttributes" 0 GetFileVersionSend
  410.     StrCpy $FUNCTION GetFileAttributes
  411.     GetDlgItem $1 $HWND 1201
  412.     ShowWindow $1 1
  413.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEATTRIBUTES1"
  414.     GetDlgItem $1 $HWND 1202
  415.     ShowWindow $1 1
  416.     GetDlgItem $1 $HWND 1205
  417.     ShowWindow $1 1
  418.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEATTRIBUTES2"
  419.     GetDlgItem $1 $HWND 1209
  420.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Path"
  421.     GetDlgItem $1 $HWND 1210
  422.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Attrib"
  423.     Abort
  424.  
  425.     GetFileVersionSend:
  426.     StrCmp $0 "  7. GetFileVersion" 0 GetCmdSend
  427.     StrCpy $FUNCTION GetFileVersion
  428.     GetDlgItem $1 $HWND 1201
  429.     ShowWindow $1 1
  430.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEVERSION1"
  431.     GetDlgItem $1 $HWND 1202
  432.     ShowWindow $1 1
  433.     GetDlgItem $1 $HWND 1205
  434.     ShowWindow $1 0
  435.     GetDlgItem $1 $HWND 1209
  436.     SendMessage $1 ${WM_SETTEXT} 1 "STR:File"
  437.     Abort
  438.  
  439.     GetCmdSend:
  440.     StrCmp $0 "  8. GetExeName" +3
  441.     StrCmp $0 "  9. GetExePath" +2
  442.     StrCmp $0 "10. GetParameters" 0 GetOptionsSend
  443.     StrCpy $FUNCTION ''
  444.     GetDlgItem $1 $HWND 1205
  445.     ShowWindow $1 0
  446.     Abort
  447.  
  448.     GetOptionsSend:
  449.     StrCmp $0 "11. GetOptions" 0 GetRootSend
  450.     StrCpy $FUNCTION GetOptions
  451.     GetDlgItem $1 $HWND 1201
  452.     ShowWindow $1 1
  453.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETOPTIONS1"
  454.     GetDlgItem $1 $HWND 1202
  455.     ShowWindow $1 1
  456.     EnableWindow $1 0
  457.     GetDlgItem $1 $HWND 1205
  458.     ShowWindow $1 1
  459.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETOPTIONS2"
  460.     GetDlgItem $1 $HWND 1209
  461.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Parameters"
  462.     GetDlgItem $1 $HWND 1210
  463.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  464.     Abort
  465.  
  466.     GetRootSend:
  467.     StrCmp $0 "12. GetRoot" 0 GetParentSend
  468.     StrCpy $FUNCTION GetRoot
  469.     GetDlgItem $1 $HWND 1201
  470.     ShowWindow $1 1
  471.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETROOT1"
  472.     GetDlgItem $1 $HWND 1202
  473.     ShowWindow $1 1
  474.     GetDlgItem $1 $HWND 1205
  475.     ShowWindow $1 0
  476.     GetDlgItem $1 $HWND 1209
  477.     SendMessage $1 ${WM_SETTEXT} 1 "STR:FullPath"
  478.     Abort
  479.  
  480.     GetParentSend:
  481.     StrCmp $0 "13. GetParent" 0 GetFileNameSend
  482.     StrCpy $FUNCTION GetParent
  483.     GetDlgItem $1 $HWND 1201
  484.     ShowWindow $1 1
  485.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETPARENT1"
  486.     GetDlgItem $1 $HWND 1202
  487.     ShowWindow $1 1
  488.     GetDlgItem $1 $HWND 1205
  489.     ShowWindow $1 0
  490.     GetDlgItem $1 $HWND 1209
  491.     SendMessage $1 ${WM_SETTEXT} 1 "STR:PathString"
  492.     Abort
  493.  
  494.     GetFileNameSend:
  495.     StrCmp $0 "14. GetFileName" 0 GetBaseNameSend
  496.     StrCpy $FUNCTION GetFileName
  497.     GetDlgItem $1 $HWND 1201
  498.     ShowWindow $1 1
  499.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILENAME1"
  500.     GetDlgItem $1 $HWND 1202
  501.     ShowWindow $1 1
  502.     GetDlgItem $1 $HWND 1205
  503.     ShowWindow $1 0
  504.     GetDlgItem $1 $HWND 1209
  505.     SendMessage $1 ${WM_SETTEXT} 1 "STR:PathString"
  506.     Abort
  507.  
  508.     GetBaseNameSend:
  509.     StrCmp $0 "15. GetBaseName" 0 GetFileExtSend
  510.     StrCpy $FUNCTION GetBaseName
  511.     GetDlgItem $1 $HWND 1201
  512.     ShowWindow $1 1
  513.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETBASENAME1"
  514.     GetDlgItem $1 $HWND 1202
  515.     ShowWindow $1 1
  516.     GetDlgItem $1 $HWND 1205
  517.     ShowWindow $1 0
  518.     GetDlgItem $1 $HWND 1209
  519.     SendMessage $1 ${WM_SETTEXT} 1 "STR:FileString"
  520.     Abort
  521.  
  522.     GetFileExtSend:
  523.     StrCmp $0 "16. GetFileExt" 0 BannerTrimPathSend
  524.     StrCpy $FUNCTION GetFileExt
  525.     GetDlgItem $1 $HWND 1201
  526.     ShowWindow $1 1
  527.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEEXT1"
  528.     GetDlgItem $1 $HWND 1202
  529.     ShowWindow $1 1
  530.     GetDlgItem $1 $HWND 1205
  531.     ShowWindow $1 0
  532.     GetDlgItem $1 $HWND 1209
  533.     SendMessage $1 ${WM_SETTEXT} 1 "STR:FileString"
  534.     Abort
  535.  
  536.     BannerTrimPathSend:
  537.     StrCmp $0 "17. BannerTrimPath" 0 DirStateSend
  538.     StrCpy $FUNCTION BannerTrimPath
  539.     GetDlgItem $1 $HWND 1201
  540.     ShowWindow $1 1
  541.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$BANNERTRIMPATH1"
  542.     GetDlgItem $1 $HWND 1202
  543.     ShowWindow $1 1
  544.     EnableWindow $1 0
  545.     GetDlgItem $1 $HWND 1205
  546.     ShowWindow $1 1
  547.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$BANNERTRIMPATH2"
  548.     GetDlgItem $1 $HWND 1209
  549.     SendMessage $1 ${WM_SETTEXT} 1 "STR:PathString"
  550.     GetDlgItem $1 $HWND 1210
  551.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  552.     Abort
  553.  
  554.     DirStateSend:
  555.     StrCmp $0 "18. DirState" 0 RefreshShellIconsSend
  556.     StrCpy $FUNCTION DirState
  557.     GetDlgItem $1 $HWND 1203
  558.     ShowWindow $1 1
  559.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$DIRSTATE1"
  560.     GetDlgItem $1 $HWND 1204
  561.     ShowWindow $1 1
  562.     GetDlgItem $1 $HWND 1205
  563.     ShowWindow $1 0
  564.     GetDlgItem $1 $HWND 1209
  565.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Directory"
  566.     Abort
  567.  
  568.     RefreshShellIconsSend:
  569.     StrCmp $0 "19. RefreshShellIcons" 0 Abort
  570.     StrCpy $FUNCTION ''
  571.     GetDlgItem $1 $HWND 1205
  572.     ShowWindow $1 0
  573.  
  574.     Abort:
  575.     Abort
  576.  
  577. ;=Enter=
  578.     Enter:
  579.     StrCpy $R0 ''
  580.     StrCpy $R5 ''
  581.  
  582.     StrCmp $STATE "  1. Locate" Locate
  583.     StrCmp $STATE "  2. GetSize                 (file)" GetSize
  584.     StrCmp $STATE "                                   (directory)" GetSize
  585.     StrCmp $STATE "                                   (no size, no subdir)" GetSize
  586.     StrCmp $STATE "  3. DriveSpace" DriveSpace
  587.     StrCmp $STATE "  4. GetDrives             (by type)" GetDrives
  588.     StrCmp $STATE "                                   (all by letter)" GetDrives
  589.     StrCmp $STATE "  5. GetTime                (local time)" GetTime
  590.     StrCmp $STATE "                                   (file time)" GetTime
  591.     StrCmp $STATE "  6. GetFileAttributes" GetFileAttributes
  592.     StrCmp $STATE "  7. GetFileVersion" GetFileVersion
  593.     StrCmp $STATE "  8. GetExeName" GetExeName
  594.     StrCmp $STATE "  9. GetExePath" GetExePath
  595.     StrCmp $STATE "10. GetParameters" GetParameters
  596.     StrCmp $STATE "11. GetOptions" GetOptions
  597.     StrCmp $STATE "12. GetRoot" GetRoot
  598.     StrCmp $STATE "13. GetParent" GetParent
  599.     StrCmp $STATE "14. GetFileName" GetFileName
  600.     StrCmp $STATE "15. GetBaseName" GetBaseName
  601.     StrCmp $STATE "16. GetFileExt" GetFileExt
  602.     StrCmp $STATE "17. BannerTrimPath" BannerTrimPath
  603.     StrCmp $STATE "18. DirState" DirState
  604.     StrCmp $STATE "19. RefreshShellIcons" RefreshShellIcons
  605.     Abort
  606.  
  607.     Locate:
  608.     ${Locate} "$R2" "$R3" "LocateCallback"
  609.     IfErrors error
  610.     StrCmp $R0 StopLocate 0 +3
  611.     StrCpy $R0 'stopped'
  612.     goto send
  613.     StrCpy $R0 'done'
  614.     goto send
  615.  
  616.     GetSize:
  617.     ${GetSize} "$R2" "$R3" $0 $1 $2
  618.     IfErrors error
  619.     StrCpy $R0 "Size=$0$\r$\nFiles=$1$\r$\nFolders=$2"
  620.     goto send
  621.  
  622.     DriveSpace:
  623.     ${DriveSpace} "$R1" "$R3" $0
  624.     IfErrors error
  625.     StrCpy $R0 "$0"
  626.     goto send
  627.  
  628.     GetDrives:
  629.     ${GetDrives} "$R1" "GetDrivesCallback"
  630.     StrCmp $R0 StopGetDrives 0 +3
  631.     StrCpy $R0 '$R5stopped'
  632.     goto send
  633.     StrCpy $R0 '$R5done'
  634.     goto send
  635.  
  636.     GetTime:
  637.     ${GetTime} "$R1" "$R3" $0 $1 $2 $3 $4 $5 $6
  638.     IfErrors error
  639.     StrCpy $R0 'Date=$0/$1/$2 ($3)$\r$\nTime=$4:$5:$6'
  640.     goto send
  641.  
  642.     GetFileAttributes:
  643.     ${GetFileAttributes} "$R1" "$R3" $0
  644.     IfErrors error
  645.     StrCpy $R0 '$0'
  646.     goto send
  647.  
  648.     GetFileVersion:
  649.     ${GetFileVersion} "$R1" $0
  650.     IfErrors error
  651.     StrCpy $R0  '$0'
  652.     goto send
  653.  
  654.     GetExeName:
  655.     ${GetExeName} $0
  656.     StrCpy $R0 '$0'
  657.     goto send
  658.  
  659.     GetExePath:
  660.     ${GetExePath} $0
  661.     StrCpy $R0 '$0'
  662.     goto send
  663.  
  664.     GetParameters:
  665.     ${GetParameters} $0
  666.     StrCpy $R0 '$0'
  667.     StrCmp $R0 '' 0 send
  668.     StrCpy $R0 'no parameters'
  669.     goto send
  670.  
  671.     GetOptions:
  672.     ${GetOptions} "$R1" "$R3" $0
  673.     IfErrors error
  674.     StrCpy $R0  '$0'
  675.     goto send
  676.  
  677.     GetRoot:
  678.     ${GetRoot} "$R1" $0
  679.     StrCpy $R0  '$0'
  680.     goto send
  681.  
  682.     GetParent:
  683.     ${GetParent} "$R1" $0
  684.     StrCpy $R0  '$0'
  685.     goto send
  686.  
  687.     GetFileName:
  688.     ${GetFileName} "$R1" $0
  689.     StrCpy $R0  '$0'
  690.     goto send
  691.  
  692.     GetBaseName:
  693.     ${GetBaseName} "$R1" $0
  694.     StrCpy $R0  '$0'
  695.     goto send
  696.  
  697.     GetFileExt:
  698.     ${GetFileExt} "$R1" $0
  699.     StrCpy $R0  '$0'
  700.     goto send
  701.  
  702.     BannerTrimPath:
  703.     ${BannerTrimPath} "$R1" "$R3" $0
  704.     StrCpy $R0  '$0'
  705.     goto send
  706.  
  707.     DirState:
  708.     ${DirState} "$R2" $0
  709.     StrCpy $R0  '$0'
  710.     goto send
  711.  
  712.     RefreshShellIcons:
  713.     ${RefreshShellIcons}
  714.     StrCpy $R0 'done'
  715.     goto send
  716.  
  717.     error:
  718.     StrCpy $R0 'error'
  719.  
  720.     send:
  721.     GetDlgItem $1 $HWND 1208
  722.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$R0"
  723.  
  724.     abort
  725. FunctionEnd
  726.  
  727. Function LocateCallback
  728.     MessageBox MB_OKCANCEL '$$R9    "path\name"=[$R9]$\n$$R8    "path"          =[$R8]$\n$$R7    "name"        =[$R7]$\n$$R6    "size"           =[$R6]' IDOK +2
  729.     StrCpy $R0 StopLocate
  730.  
  731.     Push $R0
  732. FunctionEnd
  733.  
  734. Function GetDrivesCallback
  735.     MessageBox MB_OKCANCEL '$$9    "drive letter"=[$9]$\n$$8    "drive type" =[$8]' IDOK +2
  736.     StrCpy $R0 StopGetDrives
  737.     StrCpy $R5 '$R5$9  [$8 Drive]$\r$\n'
  738.  
  739.     Push $R0
  740. FunctionEnd
  741.  
  742. Function .onInit
  743.     InitPluginsDir
  744.     GetTempFileName $INI $PLUGINSDIR
  745.     File /oname=$INI "FileFunc.ini"
  746. FunctionEnd
  747.  
  748. Page instfiles
  749.  
  750. Section "Empty"
  751. SectionEnd
  752.